Сервис обработки заявлений ЕПГУ

Назначение

Сервис реализует прием заявлений с ЕПГУ и унифицированное их преобразование в params JSON и XML форматы.

Описание

Сервис реализован с помощью библиотеки mz-library с возможностью обработки множества типов входящих и исходящих запросов. 
Может конфигурироваться статически через заполнение секции mz.services в application.yaml. Также поддерживается хранение конфигураций в БД Postgres.
Это полезно, когда перечень услуг меняется динамически. В этом случае, сервис получает информацию об изменениях из топиков кафки и актуализирует состояние БД.

Основные функции

* Прием зарегистрированных типов заявлений
* Тестирование отправки и обработки заявлений
* Обработка и пересылка ответов по заявлениям


Сервис имеет доступ к следующим источникам данных:

  • база данных Postgres
  • брокер сообщений kafka


Сервис взаимодействует с таблицами БД: attachment, petition, request


Сервис слушает топики:

  • mz.petition.out.response
  • mz.petition.in.request
  • mz.petition.created
  • service.registry.service.saved
  • mz.petition.updated
  • mz.petition.deleted

Пример сообщения из топика mz.petition.out.response:

{
   "cancelAllowed": false,
   "orderId": {
      "pguId": 29102107576004
   },
   "namespaceURI": "urn://rostelekom.ru/NotificationCompliance/1.0.4",
   "statusCode": {
      "techCode": "6"
   }
}

Пример сообщения из топика mz.petition.in.request:

<tns:request oktmo="MNSV75_3T" xmlns="urn://x-artefacts-smev-gov-ru/services/message-exchange/types/1.1" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns2="urn://x-artefacts-smev-gov-ru/services/message-exchange/types/basic/1.1" xmlns:ns3="urn://x-artefacts-smev-gov-ru/services/message-exchange/types/faults/1.1" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tns="urn://rostelekom.ru/SmallNations/1.0.1" xmlns:xml="http://www.w3.org/XML/1998/namespace">
    <tns:Service>
        <tns:currentDate>25.10.2023</tns:currentDate>
        <tns:userType>PERSON_RF</tns:userType>
        <tns:orderId>3500016961</tns:orderId>
        <tns:orderStatusCode>draft</tns:orderStatusCode>
        <tns:TargetId>-10000000278</tns:TargetId>
        <tns:TargetName>Учет лиц, относящихся к коренным малочисленным народам Российской Федерации</tns:TargetName>
        <tns:DepartmentId>-10003772917</tns:DepartmentId>
        <tns:DepartmentName>Уполномоченный орган субъекта Российской Федерации</tns:DepartmentName>
        <tns:okato>40000000000</tns:okato>
    </tns:Service>
    <tns:Goal>1</tns:Goal>
    <tns:VariantChoice>
        <tns:KP_OA_04>2</tns:KP_OA_04>
        <tns:KP_OA_03>1</tns:KP_OA_03>
        <tns:KP_OA_05>1</tns:KP_OA_05>
        <tns:KP_OA_06>1</tns:KP_OA_06>
        <tns:AddFamilyMember>true</tns:AddFamilyMember>
        <tns:KP_OA_07>1</tns:KP_OA_07>
        <tns:KP_OA_08>1</tns:KP_OA_08>
        <tns:TraditionalActivityType>
            <tns:IsAnimalHusbandry>true</tns:IsAnimalHusbandry>
            <tns:IsProcessingLivestockProducts>false</tns:IsProcessingLivestockProducts>
            <tns:IsDogBreeding>false</tns:IsDogBreeding>
            <tns:IsAnimalBreeding>false</tns:IsAnimalBreeding>
            <tns:IsBeekeeping>false</tns:IsBeekeeping>
            <tns:IsFishing>false</tns:IsFishing>
            <tns:IsCommercialHunting>false</tns:IsCommercialHunting>
            <tns:IsAgriculture>false</tns:IsAgriculture>
            <tns:IsWoodHarvesting>false</tns:IsWoodHarvesting>
            <tns:IsGathering>false</tns:IsGathering>
            <tns:IsMining>false</tns:IsMining>
            <tns:IsCrafts>true</tns:IsCrafts>
            <tns:IsBuilding>false</tns:IsBuilding>
        </tns:TraditionalActivityType>
    </tns:VariantChoice>
    <tns:DelegateInfo>1</tns:DelegateInfo>
    <tns:RecipientPersonalData>
        <tns:fullfio>Тамаркина Ирина Никаноровна</tns:fullfio>
        <tns:lastname>Тамаркина</tns:lastname>
        <tns:firstname>Ирина</tns:firstname>
        <tns:middlename>Никаноровна</tns:middlename>
        <tns:snils>300-499-727 63</tns:snils>
        <tns:gender>2</tns:gender>
        <tns:dateBirth>07.05.1969</tns:dateBirth>
        <tns:citizenship>Уфа</tns:citizenship>
        <tns:Phone>+7(998)8700949</tns:Phone>
        <tns:Email>zmFbSJfO@ya.ru</tns:Email>
        <tns:regAddress>307055, обл. Курская, р-н. Медвенский, д. Амосовка, д. 20</tns:regAddress>
        <tns:DocumentPersonal>
            <tns:typeDoc>Паспорт гражданина РФ</tns:typeDoc>
            <tns:nameDoc>Паспорт гражданина РФ</tns:nameDoc>
            <tns:docseries>2845</tns:docseries>
            <tns:docnumber>854320</tns:docnumber>
            <tns:issuedate>27.10.2017</tns:issuedate>
            <tns:issueorg>Отделом внутренних дел Ленинского р-на гор. Астрахань</tns:issueorg>
            <tns:issueidPassportRF>123112</tns:issueidPassportRF>
        </tns:DocumentPersonal>
    </tns:RecipientPersonalData>
    <tns:CompetentOrganization>
        <tns:OrganizationID>1157746452280</tns:OrganizationID>
        <tns:Name>ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ДЕЛАМ НАЦИОНАЛЬНОСТЕЙ</tns:Name>
    </tns:CompetentOrganization>
    <tns:Block_NationalityName>
        <tns:NationalityName>Абазины</tns:NationalityName>
    </tns:Block_NationalityName>
    <tns:Block_FamilyDataBlock>
        <tns:FamilyDataBlock>
            <tns:RelationDegree>Сын</tns:RelationDegree>
            <tns:LastName1>Ывпам</tns:LastName1>
            <tns:Firstname1>Фуцыам</tns:Firstname1>
            <tns:Middlename1>Фцуа</tns:Middlename1>
            <tns:DateBirth>07.10.2023</tns:DateBirth>
            <tns:PlaceBirth>Цфысяыв</tns:PlaceBirth>
            <tns:gender>1</tns:gender>
            <tns:NationalityName>Абазины</tns:NationalityName>
            <tns:DocumentPersonal1>Свидетельство о рождении</tns:DocumentPersonal1>
            <tns:Number_BirthCertificate>123</tns:Number_BirthCertificate>
            <tns:Date_BirthCertificate>12.10.2023</tns:Date_BirthCertificate>
            <tns:Issuer_BirthCertificate>Выамчваи</tns:Issuer_BirthCertificate>
            <tns:snills1>164-633-860 83</tns:snills1>
        </tns:FamilyDataBlock>
    </tns:Block_FamilyDataBlock>
    <tns:Block_OrgName>
        <tns:OrganizationName>Ыуквапи</tns:OrganizationName>
        <tns:OrganizationINN>2624188808</tns:OrganizationINN>
        <tns:OrganizationOGRN>5026867947640</tns:OrganizationOGRN>
    </tns:Block_OrgName>
    <tns:MethodGettingResults>
        <tns:IsPaperDocumentRequired>false</tns:IsPaperDocumentRequired>
    </tns:MethodGettingResults>
    <tns:Documents>
        <tns:NationalityInfoDocumentsBlock>
            <tns:CodeDocument>NationalityInfo</tns:CodeDocument>
            <tns:Name>testpdf.pdf</tns:Name>
            <tns:URL>f_NationalityInfo.FileUploadComponent.NationalityInfo.3500016961</tns:URL>
            <tns:type>application/pdf</tns:type>
        </tns:NationalityInfoDocumentsBlock>
    </tns:Documents>
</tns:request>


Пример сообщения из топика service.registry.service.saved:

{
   "success": true,
   "message": "Success",
   "data": [
      {
         "id": "79133485-fad0-4c20-8085-f8d8115ef125",
         "modified": 1698749962,
         "schema": "Service",
         "fullName": "Верификация списков граждан, пострадавших в чрезвычайных ситуациях",
         "shortName": "Верификация списков граждан, пострадавших в чрезвычайных ситуациях",
         "name": "MassMchsVerificationImport",
         "targetId": "-10000000564",
         "kcrImport": false,
         "epguImport": false,
         "state": "inProgress",
         "modificationVersion": 343,
         "version": "1.343",
         "includeReception": true,
         "goalsList": [
            {
               "label": "Проверка обоснованности выделяемого объёма средств на выплату пострадавшим гражданам",
               "value": "1"
            }
         ],
         "petitionType": "request@urn://rostelekom.ru/MassMchsVerificationImport",
         "epguFromTag": "request@urn://rostelekom.ru/MassMchsVerificationImport",
         "epguToTag": "MassMchsVerificationImport@MassMchsVerificationImport",
         "checkListIsMandatory": false,
         "updatePermission": [
            "d3372d2b-8802-48ea-835b-cc3bb8e23b93",
            "efe958b8-ed69-41a1-8f79-5ebe21f18df9",
            "83582a39-cda8-446a-b019-abd957c20ce4",
            "f5993cde-36ee-4e7f-ac4e-2710b6a792c6",
            "a593dbaa-f62e-4b59-bf48-00c242d21fed",
            "09640bdc-2efb-4aca-8b5e-a81b21bd7c4b"
         ],
         "preorder": false,
         "rgyApplied": false,
         "multiAuthority": false,
         "credentialTransferred": false,
         "_links.changeLogs": "008d688e-9953-4a05-82f8-bc1a32aa3c06",
         "_links.dictionaries": [
            "emergencyListName",
            "upload_decision_type"
         ],
         "_links.form": "fa0d8051-e942-4813-a7e7-fd39bf77393e",
         "_links.documents": [
            "d228aa74-4d5b-419f-84bf-c1429759fa6f",
            "9cd88792-ff12-4ee6-8cd2-f141ce8ec77f",
            "e0f23251-3130-4279-b25e-2e2a0aa3f6de",
            "5646231b-aa87-4727-8f8b-8f633d786b7d",
            "aafdfeba-3a33-4d81-951a-6a5e57c2b369"
         ],
         "_links.processes": [
            "96fce033-4bf0-4f1b-ac20-cd200dca2f4e"
         ],
         "_links.formsExtra": [
            "275340fe-15cb-4065-a9fd-44393ceb87b4",
            "dbdea599-aab9-4fa6-802c-51253257c9a2"
         ],
         "numberPrefix": "МЧСВ",
         "useBaseImport": false,
         "changeLogs": "008d688e-9953-4a05-82f8-bc1a32aa3c06",
         "_hasSavedLinks": true,
         "settingsId": "f0294286-516b-4b67-8bd0-12893e4c57bf",
         "hasSDD": false
      }
   ],
   "origin": "http",
   "documentIds": [
      "79133485-fad0-4c20-8085-f8d8115ef125"
   ],
   "modified": 1698749962
}


Сервис постит сообщения в топики:

  • mz.petition.in.response
  • mz.petition.out.request
  • mz.petition.out.json.request


Пример сообщения из топика mz.petition.in.response:

<tns:FormResponse xmlns:tns="urn://rostelekom.ru/LargeChildrenZY/1.0.4"><tns:changeOrderInfo><tns:orderId><tns:pguId>3500042423</tns:pguId></tns:orderId><tns:statusCode><tns:techCode>1</tns:techCode></tns:statusCode><tns:cancelAllowed>false</tns:cancelAllowed></tns:changeOrderInfo></tns:FormResponse>


Пример сообщения из топика mz.petition.out.request:

<params>
    <namespaceURI>urn://rostelekom.ru/LargeChildrenZY/1.0.4</namespaceURI>
    <concentratorServiceType>LargeChildrenZY</concentratorServiceType>
    <concentratorServiceTypeVersion>1.0.4</concentratorServiceTypeVersion>
    <oktmo>MNSV75_3T</oktmo>
    <Service>
        <currentDate>30.10.2023</currentDate>
        <userType>PERSON_RF</userType>
        <orderId>3500042423</orderId>
        <orderStatusCode>draft</orderStatusCode>
        <TargetId>-10000000217</TargetId>
        <TargetName>Постановка граждан на учет в качестве лиц, имеющих право на предоставление земельных участков в собственность бесплатно</TargetName>
        <DepartmentId>-10003772917</DepartmentId>
        <DepartmentName>Уполномоченный орган субъекта Российской Федерации</DepartmentName>
        <okato>14000000000</okato>
    </Service>
    <Goal>1</Goal>
    <VariantChoice/>
    <DelegateInfo>1</DelegateInfo>
    <RecipientPersonalData>
        <fullfio>Иванов Иван Иванович</fullfio>
        <lastname>Иванов</lastname>
        <firstname>Иван</firstname>
        <middlename>Иванович</middlename>
        <snils>000-000-600 22</snils>
        <gender>1</gender>
        <dateBirth>05.11.1952</dateBirth>
        <citizenship>РОССИЯ</citizenship>
        <Phone>+7(998)1119213</Phone>
        <Email>JdTovRwf@ya.ru</Email>
        <regAddress>309372, обл. Белгородская, р-н. Грайворонский, г-к. Белгород-22, ул. Ленина</regAddress>
        <DocumentPersonal>
            <typeDoc>Паспорт гражданина РФ</typeDoc>
            <nameDoc>Паспорт гражданина РФ</nameDoc>
            <docseries>1234</docseries>
            <docnumber>567899</docnumber>
            <issuedate>01.07.2023</issuedate>
            <issueorg>Оленегорским ГОВД Мурманской области</issueorg>
            <issueidPassportRF>512-011</issueidPassportRF>
        </DocumentPersonal>
    </RecipientPersonalData>
    <CompetentOrganization>
        <OrganizationID>1033107000728</OrganizationID>
        <Name>Администрация городского округа город Белгород (управление административной технической инспекции)</Name>
    </CompetentOrganization>
    <InformationAboutSpouse/>
    <InformationAboutChildren/>
    <RecipientCategory>
        <OtherCategory>true</OtherCategory>
        <OtherCategoryTextInput>впвп</OtherCategoryTextInput>
    </RecipientCategory>
    <MethodGettingResults>
        <IsPaperDocumentRequired>false</IsPaperDocumentRequired>
    </MethodGettingResults>
    <Documents>
        <CategoryAuthorityDocument>
            <CodeDocument>CategoryAuthorityDocument</CodeDocument>
            <Name>19.pdf</Name>
            <URL>f_CategoryAuthorityDocument.FileUploadComponent.CategoryAuthorityDocument.3500042423</URL>
            <type>application/pdf</type>
        </CategoryAuthorityDocument>
    </Documents>
</params>


Пример сообщения из топика mz.petition.out.json.request:

{
   "concentratorServiceType": "NotificationCompliance",
   "Service": {
      "orderId": 30100520224191,
      "orderStatusCode": "draft",
      "currentDate": "01.02.2022",
      "DepartmentName": "Уполномоченный орган субъекта Российской Федерации",
      "userType": "PERSON_RF",
      "DepartmentId": -10003772917,
      "TargetName": "Уведомление о планируемом строительстве или об изменении планируемых параметров объекта индивидуального жилищного строительства",
      "TargetId": -10000115325,
      "okato": 14401000000
   },
   "VariantChoice": {
      "KP_OA_09": 1,
      "KP_OA_07": 2,
      "KP_OA_06": 2,
      "KP_OA_05": 1,
      "KP_OA_04": 1,
      "KP_OA_10": 1
   },
   "LimitParameters": {
      "Number": 23452,
      "Issuer": "Уполномоченный орган",
      "Date": "13.01.2022"
   },
   "DelegateInfo": 1,
   "RecipientPersonalData": {
      "firstname": "Иван",
      "Email": "akurbanov@it-one.ru",
      "gender": 1,
      "Phone": "+7(916)3119400",
      "citizenship": "РОССИЯ",
      "DocumentPersonal": {
         "issueidPassportRF": 889898,
         "docseries": "0898",
         "typeDoc": "Паспорт гражданина РФ",
         "issuedate": "05.08.2016",
         "docnumber": 667667,
         "issueorg": "Отделом УФМС России по г. Ярославль",
         "nameDoc": "Паспорт гражданина РФ"
      },
      "middlename": "Иванович",
      "fullfio": "Иванов Иван Иванович",
      "dateBirth": "13.11.1960",
      "snils": "000-000-600 22",
      "regAddress": "150003, обл. Ярославская, г. Ярославль, пр-кт. Октября, д. 10, кв. 3",
      "lastname": "Иванов"
   },
   "Goal": 1,
   "oktmo": "MNSV75_3T",
   "Documents": {
      "SchematicRepresentationConstruction": {
         "CodeDocument": "SchematicRepresentationConstruction",
         "type": "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
         "URL": "f4_SchematicRepresentationConstruction.FileUploadComponent.SchematicRepresentationConstruction.0",
         "Name": "Заявление СУБ.docx"
      }
   },
   "namespaceURI": "urn://rostelekom.ru/NotificationCompliance/1.0.2",
   "concentratorServiceTypeVersion": "1.0.2",
   "Object": {
      "Floor": 1,
      "UseTypeRadio": 1,
      "Area": 100,
      "Front": "от фасада - 6 метров, слева - 3 метра, сзади – 10 метров; справа – 8 метров",
      "IsUndividedObjectConfirmed": true,
      "Height": 11
   },
   "CompetentOrganization": {
      "OrganizationID": 5623986796545,
      "Name": "Корневая организация автотестирования"
   },
   "MethodGettingResults": {
      "IsPaperDocumentRequired": false
   },
   "LandPlot": {
      "FIASLandPlot": "309518, обл. Белгородская, г. Старый Оскол, мкр. Звездный, д. 13, кв. 54",
      "FIASLandPlot.fias_full_code": "974a526b-7dd1-40c3-959a-032c4f2742a4",
      "IsDescriptionLocationRequired": false,
      "LandPlotUseType": "Для индивидуального жилищного строительства",
      "LandPlotCadastralNumber": "56:34:5667456:345234456",
      "LandPlotTitleDocBlock": {
         "Number": 67454,
         "Date": "01.02.2022",
         "DocumentName": "Документ"
      }
   }
}


Сервис по REST обращается к сервису mz-mock-adapter: POST /petition

Написать комментарий...